Developer Documentation

QuickTime 4 API Documentation

Wired Movies and Sprites

| Previous | Chapter Contents | Chapter Top |

Sprite MediaHandler Sample QTAtomContainer Formats

[(SpriteKeySample)] =
    [(SpritePropertyAtoms)]
    [(SpriteImageAtoms)]
    

[(SpriteOverrideSample)] =
    [(SpritePropertyAtoms)]
    

[(SpriteImageAtoms)]
    kSpriteSharedDataAtomType, 1, 1
        <kSpriteVariablesContainerAtomType>, 1
            <kSpriteStringVariableAtomType>, (1..n) ID is SpriteTrack
                            Variable ID to be set
                                                [CString]
            <kSpriteFloatingPointVariableAtomType>, (1..n) ID is
                            SpriteTrack Variable ID to be set
                                                [float]

        kSpriteImagesContainerAtomType, 1, 1
            kSpriteImageAtomType, theImageID, (1 .. numImages)
                kSpriteImageDataAtomType, 1, 1
                    [ImageData is ImageDescriptionHandle prepended to
                                                            image data]
                <kSpriteImageRegistrationAtomType, 1, 1>
                    [FixedPoint]
                <kSpriteImageNameAtomType, 1, 1>
                    [pString]
                <kSpriteImageGroupIDAtomType, 1, 1>
                    [long]


[(SpritePropertyAtoms)]
    <kQTEventFrameLoaded>, 1, 1
        [(ActionListAtoms)]
        <kCommentAtomType>, (anyUniqueIDs), (1..numComments)
            [CString]
            
    kSpriteAtomType, theSpriteID, (1 .. numSprites)
        <kSpritePropertyMatrix, 1, 1>
            [MatrixRecord]
        <kSpritePropertyVisible, 1, 1>
            [short]
        <kSpritePropertyLayer, 1, 1>
            [short]
        <kSpritePropertyImageIndex, 1, 1>
            [short]
        <kSpritePropertyGraphicsMode, 1, 1>
            [ModifierTrackGraphicsModeRecord]

        <kSpriteUsesImageIDsAtomType, 1, 1>
            [array of QTAtomID's, one per image used]

        <kSpriteBehaviorsAtomType>, 1
        
        <kSpriteImageBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        <kSpriteCursorBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        <kSpriteStatusStringsBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        
        <[(SpriteActionAtoms)]>


                    
[(SpriteActionAtoms)] =
    kQTEventType, theQTEventType, (1 .. numEventTypes)
            [(ActionListAtoms)]
            <kCommentAtomType>, (anyUniqueIDs), (1..numComments)

                [CString]

        
[(ActionListAtoms)] =
    kAction, (anyUniqueIDs), (1..numActions)
        kWhichAction    1, 1
            [long whichActionConstant]
        <kActionParameter>  (anyUniqueIDs), (1..numParameters)
            [(parameterData)] ( whichActionConstant, paramIndex )       
    // either leaf data or child atoms
        <kActionFlags>  parameterID, (1..numParamsWithFlags)
            [long actionFlags]
        <kActionParameterMinValue>  parameterID, (1.. numParamsWithMin)
            [data depends on param type]
        <kActionParameterMaxValue>  parameterID, (1.. numParamsWithMax)
            [data depends on param type]
        [(ActionTargetAtoms)]
        
        <kCommentAtomType>, (anyUniqueIDs), (1..numComments)

            [CString]

[(ActionTargetAtoms)] =
    <kActionTarget>
        <kTargetMovie>
            [no data]
[(ActionTargetAtoms)] =
    <kActionTarget>
        
        <kTargetMovieName>
            [Pstring MovieName]
        OR
        <kTargetMovieID>
            [long MovieID]
            OR
            [(kExpressionAtoms)]
        <kTargetTrackName>
            [PString trackName]
        <kTargetTrackType>
            [OSType trackType]
        <kTargetTrackIndex>
            [long trackIndex]
            OR
            [(kExpressionAtoms)]
        <kTargetTrackID>
            [long trackID]
            OR
            [(kExpressionAtoms)]
        <kTargetSpriteName>
            [PString spriteName]
        <kTargetSpriteIndex>
            [short spriteIndex]
            OR
            [(kExpressionAtoms)]
        <kTargetSpriteID>
            [QTAtomID spriteIID]
            OR
            [(kExpressionAtoms)]


[(kExpressionAtoms)] =
    kExpressionContainerAtomType, 1, 1
        <kOperatorAtomType, theOperatorType, 1>
            kOperandAtomType, (anyUniqueIDs), (1..numOperands)
                [(OperandAtoms)]
        OR
        <kOperandAtomType, 1, 1>
            [(OperandAtoms)]


 

[(OperandAtoms)] =
    <kOperandExpression> 1, 1
        [(kExpressionAtoms)]                    // allows for recursion
    OR
    <kOperandConstant> 1, 1
        [ float theConstant ]
    OR
    <kOperandSpriteTrackVariable> 1, 1
        [(ActionTargetAtoms)]
        kActionParameter, 1, 1
            [QTAtomID spriteVariableID]
    OR
    <kOperandKeyIsDown> 1, 1
        kActionParameter, 1, 1
            [UInt16 modifierKeys]
        kActionParameter, 2, 2
            [UInt8 asciiCharCode]
    OR      
    <kOperandRandom> 1, 1
        kActionParameter, 1, 1
            [short minimum]
        kActionParameter, 2, 2
            [short maximum]
    OR      
    <any other operand atom type>
        [(ActionTargetAtoms)]

The format for parameter data depends on the action and parameter index.

In most cases, the kActionParameter atom is a leaf atom containing data; for a few parameters, it contains child atoms.

whichAction corresponds to the action type which is specified by the leaf data of a kWhichAction atom.

paramIndex is the index of the parameter's kActionParameter atom.

[(parameterData)] ( whichAction, paramIndex ) =
{
    kActionMovieSetVolume:
        param1:     short volume
    
    kActionMovieSetRate
        param1:     Fixed rate
        
    kActionMovieSetLoopingFlags
        param1:     long loopingFlags

    kActionMovieGoToTime
        param1:     TimeValue time

    kActionMovieGoToTimeByName
        param1:     Str255 timeName

    kActionMovieGoToBeginning
        no params
        
    kActionMovieGoToEnd
        no params
        
    kActionMovieStepForward
        no params
        
    kActionMovieStepBackward
        no params

    kActionMovieSetSelection
        param1:     TimeValue startTime
        param2:     TimeValue endTime
        
    kActionMovieSetSelectionByName
        param1:     Str255 startTimeName
        param2:     Str255 endTimeName

    kActionMoviePlaySelection
        param1:     Boolean selectionOnly

    kActionMovieSetLanguage
        param1:     long language
        
    kActionMovieChanged
        no params


    kActionTrackSetVolume
        param1:     short volume

    kActionTrackSetBalance
        param1:     short balance

    kActionTrackSetEnabled
        param1:     Boolean enabled

    kActionTrackSetMatrix
        param1:     MatrixRecord matrix
    
    kActionTrackSetLayer
        param1:     short layer

    kActionTrackSetClip
        param1:     RgnHandle clip


    kActionSpriteSetMatrix
        param1:     MatrixRecord matrix

    kActionSpriteSetImageIndex
        parm1:      short imageIndex

    kActionSpriteSetVisible
        param1:     short visible

    kActionSpriteSetLayer
        param1:     short layer

    kActionSpriteSetGraphicsMode
        param1:     ModifierTrackGraphicsModeRecord graphicsMode

    kActionSpritePassMouseToCodec
        no params
        
    kActionSpriteClickOnCodec
        param1:     Point localLoc

    kActionSpriteTranslate
        param1:     Fixed x
        param2:     Fixed y
        param3:     Boolean isRelative

    kActionSpriteScale
        param1:     Fixed xScale            
        param2:     Fixed yScale
    
    kActionSpriteRotate
        param1:     Fixed degrees

    kActionSpriteStretch
        param1:     Fixed p1x
        param2:     Fixed p1y
        param3:     Fixed p2x
        param4:     Fixed p2y
        param5:     Fixed p3x
        param6:     Fixed p3y
        param7:     Fixed p4x
        param8:     Fixed p4y


    kActionQTVRSetPanAngle
        param1:     float panAngle

    kActionQTVRSetTiltAngle
        param1:     float tileAngle

    kActionQTVRSetFieldOfView
        param1:     float fieldOfView

    kActionQTVRShowDefaultView
        no params
        
    kActionQTVRGoToNodeID
        param1:     UInt32 nodeID

    kActionMusicPlayNote
        param1:     long sampleDescIndex
        param2:     long partNumber
        param3:     long delay
        param4:     long pitch
        param5:     long velocity
        param6:     long duration
        
    kActionMusicSetController
        param1:     long sampleDescIndex
        param2:     long partNumber
        param3:     long delay
        param4:     long controller
        param5:     long value

    kActionCase
        param1:     [(CaseStatementActionAtoms)]
            
    kActionWhile
        param1:     [(WhileStatementActionAtoms)]
                    
    kActionGoToURL
        param1:     CString urlLink
        
    kActionSendQTEventToSprite
        param1:     [(SpriteTargetAtoms)]
        param2:     QTEventRecord theEvent
        
    kActionDebugStr
        param1:     Str255 theMessageString

    kActionPushCurrentTime
        no params

    kActionPushCurrentTimeWithLabel
        param1:     Str255 theLabel

    kActionPopAndGotoTopTime
        no params

    kActionPopAndGotoLabeledTime
        param1:     Str255 theLabel

    kActionSpriteTrackSetVariable
        param1:     QTAtomID variableID
        param2:     float value

    kActionApplicationNumberAndString
        param1:     long aNumber
        param2:     Str255 aString
}

Both [(CaseStatementActionAtoms)] and [(WhileStatementActionAtoms)] are child atoms of a kActionParameter 1 , 1 atom


[(CaseStatementActionAtoms)] =
    kConditionalAtomType, (anyUniqueIDs), (1..numCases)
        [(kExpressionAtoms)]
        kActionListAtomType 1, 1
            [(ActionListAtoms)]         // may contain nested conditional
                                            actions
    
    
[(WhileStatementActionAtoms)] =
    kConditionalAtomType, 1, 1
        [(kExpressionAtoms)]
        kActionListAtomType 1, 1
            [(ActionListAtoms)]             // may contain nested
                                            conditional actions
            

 

© 1999 Apple Computer, Inc.

| Previous | Chapter Contents | Chapter Top |